package parsers;

import java.util.ArrayList;

import model.Compuesto;
import dtos.CompuestoDTO;

public class CompuestoParser {
	private static CompuestoParser instance = null;
	protected CompuestoParser() {
	}
	public static CompuestoParser getInstance() {
		if(instance == null) {
    	  instance = new CompuestoParser();
		}
		return instance;
	}
	public Compuesto fromDTOToModelEager(CompuestoDTO compuestoDTO){
		Compuesto compuesto= new Compuesto();
		compuesto.setId(compuestoDTO.getId());
		compuesto.setCantidad(compuestoDTO.getCantidad());
		if(compuestoDTO.getNutriente()!=null)
			compuesto.setNutriente(NutrienteParser.getInstance().fromDTOToModelEager(compuestoDTO.getNutriente()));
		if(compuestoDTO.getAlimento()!=null)
			compuesto.setAlimento(AlimentoParser.getInstance().fromDTOToModelLazy(compuestoDTO.getAlimento()));
		if(compuestoDTO.getRegimenAlimenticio()!=null)
			compuesto.setRegimenAlimenticio(RegimenAlimenticioParser.getInstance().fromDTOToModelLazy(compuestoDTO.getRegimenAlimenticio()));
		return compuesto;
		
	}
	
	public CompuestoDTO fromModelToDTOEager(Compuesto compuesto){
		CompuestoDTO compuestoDTO= new CompuestoDTO();
		compuestoDTO.setId(compuesto.getId());
		compuestoDTO.setCantidad(compuesto.getCantidad());
		if(compuesto.getNutriente()!=null)
			compuestoDTO.setNutriente(NutrienteParser.getInstance().fromModelToDTOEager(compuesto.getNutriente()));
		if(compuesto.getAlimento()!=null)
			compuestoDTO.setAlimento(AlimentoParser.getInstance().fromModelToDTOLazy(compuesto.getAlimento()));
		if(compuesto.getRegimenAlimenticio()!=null)
			compuestoDTO.setRegimenAlimenticio(RegimenAlimenticioParser.getInstance().fromModelToDTOLazy(compuesto.getRegimenAlimenticio()));
		return compuestoDTO;
		
	}
	public ArrayList<CompuestoDTO> fromModelToDTOArray(ArrayList<Compuesto> compuestos) {
		ArrayList<CompuestoDTO> compuestosDTO=new ArrayList<CompuestoDTO>();
		for (Compuesto compuesto : compuestos) {
			compuestosDTO.add(fromModelToDTOEager(compuesto));
		}
		return compuestosDTO;
	}
}
